import axios from 'axios';
import { ElMessage } from 'element-plus';
import { useTokenStore } from "@/stores/token.js";

// 创建 axios 实例
const baseURL = '/api';
const instance = axios.create({ baseURL })

import router from "@/router";

// 请求拦截器
instance.interceptors.request.use(
    (config) => {
        // 请求前的回调
        //添加token
        const tokenStore = useTokenStore();
        if (tokenStore.token) {
            config.headers.Authorization = tokenStore.token;
        }
        return config;
    },
    (err) => {
        // 请求错误的回调
        Promise.reject(err);
    }
)

// 响应拦截器
instance.interceptors.response.use(
    result => {
        // 判断业务状态码
        if (result.data.code === 0) {
            return result.data;
        }
        // 操作失败
        ElMessage.error(result.data.msg ? result.data.msg : '操作失败');
        return Promise.reject(result.data);
    },
    err => {
        // 判断状态码,如果状态码为401,则跳转到登录页
        if (err.response.status === 401) {
            ElMessage.error("登录已过期或未登录，请重新登录");
            router.push('/login');
        } else {
            ElMessage.error("服务器异常");
            return Promise.reject(err);
        }
    }
)

export default instance;